package br.unicamp.ic.inf300.arena.persistencia.dao;

import java.util.Collection;
import java.util.Date;

import br.unicamp.ic.inf300.arena.modelo.logistico.Evento;
import br.unicamp.ic.inf300.framework.persistencia.IDAOBase;

public interface IEventoDAO extends IDAOBase {
	public static final String TABELA_BD = "ARENAVENDAS.Evento";

	public static final String COLUMN_CODIGO_PK = "codevento";
	public static final String COLUMN_HORARIO_SESSAO = "horariosessao";
	public static final String COLUMN_DATA = "data";
	public static final String COLUMN_QTD_VAGAS_LIVRES = "qtdvagaslivre";
	public static final String COLUMN_VALOR = "valor";

	/**
	 * 
	 * @param codigo
	 * 
	 * @return Evento
	 * 
	 * @throws Exception
	 */
	public Evento obter(long codigo) throws Exception;
	
	/**
	 * 
	 * @param dataInicio
	 * @param dataTermino
	 * @param haVagas
	 * 
	 * @return Collection<Evento>
	 * 
	 * @throws Exception
	 * 
	 */
	public Collection<Evento> obterEventosEmCartaz(Date dataInicio,
			Date dataTermino, boolean haVagas) throws Exception;

	/**
	 * Atualiza qtdVagasLivres conforme param. qtd do Espetaculo associado a PK codigo
	 * 
	 * @param codigo
	 * @param qtd
	 * 
	 * @return int
	 * 
	 * @throws Exception
	 */
	public int atualizar(long codigo, int qtd) throws Exception;
}